
/**
 * 功能: 判断 路由对象 是否在用户的权限列表中( 用户是否有权限访问该路由 ).
 * @params  route 路由对象  {}
 * @params  roles 用户的权限列表  [1,2,11,12]
 *  */ 
function hasPermission( route, roles ){
    //满足条件,说明该路由route需要权限 才能访问
    if( route && route.meta && route.meta.permission_no ){ 
        return roles.some( (item)=>{ return item == route.meta.permission_no } )
    }else{ //不满足条件, 说明该路由route无需权限 就可以访问
        return true;
    }
}
/**
 * 功能: 从系统的完整路由表中 过滤出用户有权限访问的路由
 * @routes 系统的完整路由表  ,  [{},{},{}]
 * @roles  用户的权限列表 , [1,2,11,12]
 *  */  
function filterRoutes( routes, roles ){
    var accessedRoutes = routes.filter((route)=>{
        if( hasPermission( route, roles ) ){ //有访问该路由的权限
            if( route.children && route.children.length > 0 ){ //该路由有子路由, 需要继续判断该用户是否有 子路由的访问权限
                route.children = filterRoutes(route.children, roles);
            }
            return true;
        }else{ //没有访问该路由的权限
            return false;
        }
    })
    return accessedRoutes;
}

export default filterRoutes;